/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.sistemas.postgrado.samupg.view.controller;

import java.util.Date;
import javax.annotation.Resource;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.faces.event.ComponentSystemEvent;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import pe.edu.sistemas.postgrado.samupg.business.service.impl.informacion.NotificacionServiceImpl;
import pe.edu.sistemas.postgrado.samupg.business.service.informacion.NotificacionService;
import pe.edu.sistemas.postgrado.samupg.business.service.planificacion.FichaInscripcionService;
import pe.edu.sistemas.postgrado.samupg.domain.model.Notificacion;
import pe.edu.sistemas.postgrado.samupg.domain.model.Usuario;

/**
 *
 * @author Almendra
 */

@ManagedBean
@Scope("view")
@Controller
public class enviarNotificacionController {
    
    private int postulanteId;
    private Usuario postulante;    
    private String Asunto;
    private String Descripcion;
    
    @Resource
    private FichaInscripcionService fichaService;
    
    @Resource
    private NotificacionService notiservice;
    
    /**
     * Creates a new instance of AsignarCursosPeriodo
     */
    public enviarNotificacionController() {
    }
    
    public void preRenderPostulanteListener(ComponentSystemEvent cse) {
        setPostulante(fichaService.getFichaxId(postulanteId).getUsuario());
    }
    
    public String enviarNotificacion(){
        String result = null;
        
        if (getAsunto().trim().length() > 50) {
            result = "El asunto no debe exceder los 50 caracteres";
        }
        
        if (getDescripcion().trim().length() > 1000) {
            result = "La descripcion no debe exceder los 1000 caracteres";
        }
        
        if(result==null){
            Date date= new Date();
            Notificacion notif = new Notificacion();
            notif.setNotificAsunto(Asunto);
            notif.setNotificDescrip(Descripcion);
            notif.setUsuario(postulante);
            notif.setNotificFecha(date);
            result=notiservice.crearNotificacion(notif);            
        }
        
        if (result == null) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Success", "Registro Correcto de Notificacion"));
            return "/director/gestionarPostulantes.jsf?faces-redirect=true;";
        } else {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Error",
                    "No se pudo registrar la notificacion. Error encontrado: " + result));
        }
        
        return "";
    }
    
    public String regresar(){
        return "/director/gestionarPostulantes.jsf?faces-redirect=true;";
        
    }

    /**
     * @return the postulanteId
     */
    public int getPostulanteId() {
        return postulanteId;
    }

    /**
     * @param postulanteId the postulanteId to set
     */
    public void setPostulanteId(int postulanteId) {
        this.postulanteId = postulanteId;
    }

    /**
     * @return the postulante
     */
    public Usuario getPostulante() {
        return postulante;
    }

    /**
     * @param postulante the postulante to set
     */
    public void setPostulante(Usuario postulante) {
        this.postulante = postulante;
    }


    /**
     * @return the Asunto
     */
    public String getAsunto() {
        return Asunto;
    }

    /**
     * @param Asunto the Asunto to set
     */
    public void setAsunto(String Asunto) {
        this.Asunto = Asunto;
    }

    /**
     * @return the Descripcion
     */
    public String getDescripcion() {
        return Descripcion;
    }

    /**
     * @param Descripcion the Descripcion to set
     */
    public void setDescripcion(String Descripcion) {
        this.Descripcion = Descripcion;
    }
    
}
